package com.explorati.LeetCode88.mergesortarray;

import java.util.Arrays;

/**
 * 改进后代码，只需开辟m空间存放nums1的非零元素
 * 
 * @author explorati
 *
 */
public class Solution1 {
	public static int[] merge(int[] nums1, int m, int[] nums2, int n) {
		int[] arr = Arrays.copyOf(nums1, m);

		// i记录arr中位置，z记录nums2中位置，
		int i = 0, z = 0;
		for (int k = 0; k < nums1.length; k++) {
			if (i >= m) {
				nums1[k] = nums2[z];
				z++;
			} else if (z >= n) {
				nums1[k] = arr[i];
				i++;
			} else if (arr[i] < nums2[z]) {
				nums1[k] = arr[i];
				i++;
			} else if (arr[i] >= nums2[z]) {
				nums1[k] = nums2[z];
				z++;
			}
		}
		return nums1;
	}

	public static void main(String[] args) {
		int[] nums1 = { 2, 0 };
		int[] nums2 = { 1 };
		int[] arr = merge(nums1, 1, nums2, 1);

		for (int i : arr) {
			System.out.print(i + " ");
		}

	}

}
